The disclosed material relates to the field of graphics processing. More specifically, but not by way of limitation, this disclosure relates to determining dependencies among graphics commands, then searching and selecting commands in an order that ensures a low latency in processing commands for execution on a graphics processing unit.
Computers and other computational devices typically have at least one programmable processing element that is generally known as a central processing unit (CPU). They frequently also have other programmable processors that are used for specialized processing of various types, such as graphic processing operations which are typically called graphic processing units (GPUs). GPUs generally comprise multiple cores, each designed for executing the same instruction on parallel data streams, making them more effective than general-purpose CPUs for algorithms in which processing of large blocks of data is done in parallel. In general, a CPU functions as the host and hands-off specialized tasks to the GPUs.
Graphics commands generated by the CPU are communicated to the GPU for execution. In order to expedite the execution time of the graphics commands, the idle time of the GPU hardware must be reduced by selecting a proper order of commands for processing. However, adopting a proper order for execution on the GPU is especially difficult when multiple graphics commands depend on each other. The GPU may be sitting idle for a significant time while the GPU firmware is determining the dependencies between commands and searching for the proper command to be submitted to the GPU for processing.